aboutsummaryrefslogtreecommitdiff
path: root/src/routes/user/[user]/+page.svelte
diff options
context:
space:
mode:
authorFuwn <[email protected]>2026-03-01 16:20:51 -0800
committerFuwn <[email protected]>2026-03-01 16:21:02 -0800
commiteae5d24d9e79e59a19d4721caaeaa0ca650ecb33 (patch)
tree1b685bb248e051dfa26d2bfdebe6689402dd93c5 /src/routes/user/[user]/+page.svelte
parentchore(tooling): remove legacy eslint and prettier (diff)
downloaddue.moe-eae5d24d9e79e59a19d4721caaeaa0ca650ecb33.tar.xz
due.moe-eae5d24d9e79e59a19d4721caaeaa0ca650ecb33.zip
chore(biome): drop formatter style overrides
Diffstat (limited to 'src/routes/user/[user]/+page.svelte')
-rw-r--r--src/routes/user/[user]/+page.svelte181
1 files changed, 93 insertions, 88 deletions
diff --git a/src/routes/user/[user]/+page.svelte b/src/routes/user/[user]/+page.svelte
index 536d02e5..ecbc8330 100644
--- a/src/routes/user/[user]/+page.svelte
+++ b/src/routes/user/[user]/+page.svelte
@@ -1,35 +1,35 @@
<script lang="ts">
-import Spacer from '$lib/Layout/Spacer.svelte';
-import settings from '$stores/settings';
-import ParallaxImage from '../../../lib/Image/ParallaxImage.svelte';
-import { typeSchedule, type ParseResult } from '$lib/Hololive/hololive';
-import HeadTitle from '$lib/Home/HeadTitle.svelte';
-import Message from '$lib/Loading/Message.svelte';
-import { estimatedDayReading } from '$lib/Media/Manga/time';
-import Skeleton from '$lib/Loading/Skeleton.svelte';
-import root from '$lib/Utility/root';
-import locale from '$stores/locale';
-import { onMount } from 'svelte';
-import authorisedUsers from '$lib/Data/Static/authorised.json';
-import tooltip from '$lib/Tooltip/tooltip';
-import AnimeRateLimited from '$lib/Error/AnimeRateLimited.svelte';
-import identity from '$stores/identity';
-import SettingHint from '$lib/Settings/SettingHint.svelte';
-import proxy from '$lib/Utility/proxy';
-import { parseScheduleHtml } from '$lib/Data/hololive';
-import type { Preferences } from '../../../graphql/$types';
-import SvelteMarkdown from '@humanspeak/svelte-markdown';
-import MarkdownLink from '$lib/MarkdownLink.svelte';
-import LinkedTooltip from '$lib/Tooltip/LinkedTooltip.svelte';
-import { graphql } from '$houdini';
-import type { PageData } from './$types';
+import Spacer from "$lib/Layout/Spacer.svelte";
+import settings from "$stores/settings";
+import ParallaxImage from "../../../lib/Image/ParallaxImage.svelte";
+import { typeSchedule, type ParseResult } from "$lib/Hololive/hololive";
+import HeadTitle from "$lib/Home/HeadTitle.svelte";
+import Message from "$lib/Loading/Message.svelte";
+import { estimatedDayReading } from "$lib/Media/Manga/time";
+import Skeleton from "$lib/Loading/Skeleton.svelte";
+import root from "$lib/Utility/root";
+import locale from "$stores/locale";
+import { onMount } from "svelte";
+import authorisedUsers from "$lib/Data/Static/authorised.json";
+import tooltip from "$lib/Tooltip/tooltip";
+import AnimeRateLimited from "$lib/Error/AnimeRateLimited.svelte";
+import identity from "$stores/identity";
+import SettingHint from "$lib/Settings/SettingHint.svelte";
+import proxy from "$lib/Utility/proxy";
+import { parseScheduleHtml } from "$lib/Data/hololive";
+import type { Preferences } from "../../../graphql/$types";
+import SvelteMarkdown from "@humanspeak/svelte-markdown";
+import MarkdownLink from "$lib/MarkdownLink.svelte";
+import LinkedTooltip from "$lib/Tooltip/LinkedTooltip.svelte";
+import { graphql } from "$houdini";
+import type { PageData } from "./$types";
export let data: PageData;
$: ({ Profile } = data);
$: preferences = $Profile.fetching
- ? undefined
- : ($Profile.data?.User?.preferences as Preferences | undefined);
+ ? undefined
+ : ($Profile.data?.User?.preferences as Preferences | undefined);
const setCategoriesQuery = graphql(`
mutation SetCategories($categories: [String!]!) {
@@ -111,110 +111,115 @@ let draggedCategory: string | null = null;
let draggedOverCategory: string | null = null;
$: displayBadges = (username: string, badges: number | string) =>
- $locale({
- values: {
- badges: badges,
- username
- }
- }).user.profile.badges;
+ $locale({
+ values: {
+ badges: badges,
+ username,
+ },
+ }).user.profile.badges;
const handleDragStart = (
- event: DragEvent & { currentTarget: EventTarget & HTMLDivElement },
- category: string | null
+ event: DragEvent & { currentTarget: EventTarget & HTMLDivElement },
+ category: string | null,
) => {
- draggedCategory = category;
+ draggedCategory = category;
- if (event.dataTransfer) event.dataTransfer.effectAllowed = 'move';
+ if (event.dataTransfer) event.dataTransfer.effectAllowed = "move";
};
const handleDragOver = (event: DragEvent) => {
- event.preventDefault();
+ event.preventDefault();
- if (event.dataTransfer) event.dataTransfer.dropEffect = 'move';
+ if (event.dataTransfer) event.dataTransfer.dropEffect = "move";
};
const handleDragEnter = (
- event: DragEvent & { currentTarget: EventTarget & HTMLDivElement },
- category: string | null
+ event: DragEvent & { currentTarget: EventTarget & HTMLDivElement },
+ category: string | null,
) => {
- event.preventDefault();
+ event.preventDefault();
- if (draggedCategory !== category && preferences && draggedCategory) {
- draggedOverCategory = category;
+ if (draggedCategory !== category && preferences && draggedCategory) {
+ draggedOverCategory = category;
- const categories = preferences.pinned_badge_wall_categories;
- const draggedIndex = categories.indexOf(draggedCategory);
- const targetIndex = categories.indexOf(category || '');
+ const categories = preferences.pinned_badge_wall_categories;
+ const draggedIndex = categories.indexOf(draggedCategory);
+ const targetIndex = categories.indexOf(category || "");
- categories.splice(draggedIndex, 1);
- categories.splice(targetIndex, 0, draggedCategory);
+ categories.splice(draggedIndex, 1);
+ categories.splice(targetIndex, 0, draggedCategory);
- preferences.pinned_badge_wall_categories = categories;
- }
+ preferences.pinned_badge_wall_categories = categories;
+ }
};
const handleDragLeave = (
- event: DragEvent & { currentTarget: EventTarget & HTMLDivElement },
- category: string
+ event: DragEvent & { currentTarget: EventTarget & HTMLDivElement },
+ category: string,
) => {
- event.preventDefault();
+ event.preventDefault();
- if (draggedOverCategory === category && preferences && draggedCategory) {
- draggedOverCategory = null;
+ if (draggedOverCategory === category && preferences && draggedCategory) {
+ draggedOverCategory = null;
- const categories = preferences.pinned_badge_wall_categories;
- const draggedIndex = categories.indexOf(draggedCategory);
+ const categories = preferences.pinned_badge_wall_categories;
+ const draggedIndex = categories.indexOf(draggedCategory);
- categories.splice(draggedIndex, 1);
- categories.splice(categories.indexOf(category) + 1, 0, draggedCategory);
+ categories.splice(draggedIndex, 1);
+ categories.splice(categories.indexOf(category) + 1, 0, draggedCategory);
- preferences.pinned_badge_wall_categories = categories;
- }
+ preferences.pinned_badge_wall_categories = categories;
+ }
};
const handleDrop = (event: { preventDefault: () => void }) => {
- event.preventDefault();
+ event.preventDefault();
- if (userData && preferences)
- setCategoriesQuery
- .mutate({
- categories: preferences.pinned_badge_wall_categories
- })
- .then();
+ if (userData && preferences)
+ setCategoriesQuery
+ .mutate({
+ categories: preferences.pinned_badge_wall_categories,
+ })
+ .then();
- draggedCategory = null;
- draggedOverCategory = null;
+ draggedCategory = null;
+ draggedOverCategory = null;
};
onMount(async () => {
- schedule = typeSchedule(
- parseScheduleHtml(
- await (
- await fetch(proxy('https://schedule.hololive.tv'), {
- headers: {
- Cookie: 'timezone=Asia/Tokyo'
- }
- })
- ).text()
- )
- );
+ schedule = typeSchedule(
+ parseScheduleHtml(
+ await (
+ await fetch(proxy("https://schedule.hololive.tv"), {
+ headers: {
+ Cookie: "timezone=Asia/Tokyo",
+ },
+ })
+ ).text(),
+ ),
+ );
});
const getBadgeWallCSS = () =>
- (document.getElementById('badgeWallCSS') as HTMLTextAreaElement).value;
+ (document.getElementById("badgeWallCSS") as HTMLTextAreaElement).value;
const getBiography = () =>
- (document.getElementById('biography') as HTMLTextAreaElement).value.slice(0, 3000);
+ (document.getElementById("biography") as HTMLTextAreaElement).value.slice(
+ 0,
+ 3000,
+ );
const toggleCategory = () => {
- if (!userData) return;
+ if (!userData) return;
- const categoryElement = document.getElementById('category') as HTMLInputElement;
- const category = categoryElement.value;
+ const categoryElement = document.getElementById(
+ "category",
+ ) as HTMLInputElement;
+ const category = categoryElement.value;
- toggleCategoryQuery.mutate({ category }).then();
+ toggleCategoryQuery.mutate({ category }).then();
- categoryElement.value = '';
+ categoryElement.value = "";
};
// 8.5827814569536423841e0